#ifndef OBJETO_H_
#define OBJETO_H_

class Bytes;

class Objeto {

public:
	/*
	 * Esta es una de las clases mas importantes del trabajo practico. Es la interfaz de alto nivel
	 * que el usuario debe implementar en cada caso para serializar e hidratar los datos.
	 */

	/*
	 * Pre: -
	 * Pos: Crea una nueva instancia.
	 */
	Objeto();

	/*
	 * Pre: -
	 * Pos: Serializa el estado del objeto.
	 */
	virtual Bytes serializarse() = 0;

	/*
	 * Pre: bytes validos segun cada hidratacion.
	 * Pos: Hidrata el estado del objeto.
	 */
	virtual bool hidratarse(const Bytes&) = 0;

	/*
	 * Pre: -
	 * Pos: Libera los recursos instanciados.
	 */
	virtual ~Objeto();
};

#endif /* OBJETO_H_ */
